package com.zret.oasys.service;

import java.util.Date;
import java.util.List;

import com.zret.oasys.dao.AttendanceDao;
import com.zret.oasys.dao.impl.AttendanceDaoImpl;
import com.zret.oasys.dbtools.PageData;
import com.zret.oasys.entity.Attence;
import com.zret.oasys.entity.AttenceTable;
import com.zret.oasys.entity.Emp;
/**
 * 考勤表业务层接口
 * @author 77404
 *
 */
public interface AttendanceService {
	AttendanceDao attendanceDao=new AttendanceDaoImpl();
	
	/**
	 * 增加考勤表信息
	 * @param attence 考勤对象
	 * @return  true增加考勤表成功，false增加失败
	 */
	public boolean addAttendance(Attence attence);
	
	
	
	/**
	 * 根据考勤状态查询所有
	 * @param attencetype 考勤状态
	 * @return  List<Attence>
	 */
	public List<Attence> getAttendanceByType(String attencetype);
	

	/**
	 * 根据员工id,考勤类型和考勤时间模糊查询（如：2020-05-08来查询，我们想查是当前日期）
	 * @param empid 员工编号
	 * @param attencetime 当前日期  如2020-05-08 不包含时间
	 * @param attencetype 考勤类型状态
	 * @return List<Attence>
	 */
	public List<Attence> getAttendanceByIdTypeTime(int empid, String attencetime, String attencetype);
	
	
	/**
	 * 根据员工id,日期考勤开始和结束时间和考勤类型来查询 (如可根据当前日期，查询不同时间段) [ ] 双闭合时间和半闭合( ] 
	 * 后续可扩展
	 * @param select 选择要执行的sql 比如1,2,3
	 * @param empid 员工id
	 * @param dateString 日期
	 * @param starttime 开始时间
	 * @param endtime  结束时间
	 * @param attencetype 考勤类型
	 * @return List<Attence>
	 */
	public List<Attence> getAttendByIdStarEndTimeType(String select, int empid, String dateString, String starttime,
			String endtime, String attencetype);
	
	
	
	/**
	 * 联合查询，考勤表和员工表联合查询，查询员工信息（我主要目的是要获取员工id）
	 * @return  List<Emp>
	 */
	public List<Emp> getAttendAndEmpIsEmpid();
	
	
	
	/**
	 * 根据考勤日期获取考勤记录（分页）
	 * @param page 当前页
	 * @param pageSize  每页记录数
	 * @param attencetime 考勤日期
	 * @return   PageData<AttenceTable>   泛型：AttenceTable实体类是多表联合查询创建的实体类
	 */
	public PageData<AttenceTable> getAttendanceByDatePage(int page, int pageSize, String attencetime);
	
	
	/**
	 * 根据流水号修改员工考勤状态
	 * @param serialnum 流水号(字符串，实现类在转换成long类型) 
	 * @param attencetype 考勤状态（到岗，迟到，请假，旷工）
	 * @return ture修改成功
	 */
	public boolean updateAttendanceType(String serialnum, String attencetype);
	
	
	
	
	/**
	 * 根据员工id，考勤类型和考勤日期的模糊查询
	 * @param empid 员工id
	 * @param attenceDate 日期
	 * @param attencetype 考勤类型
	 * @return   List<Attence>
	 */
	public List<Attence> getAttendanceByIdLikeTypeDate(int empid, String attenceDate, String attencetype);
	
	
	
	
	/**
	 * 根据员工编号模糊查询日期（分页）
	 * @param empid  员工编号
	 * @param attenceDate 考勤日期（只有日期）
	 * @return PageData<Attence>
	 */
	public PageData<AttenceTable> getAttendanceByIdLikeDate(int page, int pageSize, int empid, String attenceDate);
	
	
	
	
	
}
